"""
4. 切片的使用

题目：编写一个Python程序，随机生成20个由大小写字母、数字和下划线组成的字符组，并使用字符串、列表、集合和元组的方法打印出来。
对字符串和列表切片，用两种方式取出4-14位的字符。
提示：
    1. 使用random.randint()函数生成随机整数。
    2. 使用random.choice()函数从字符组中随机选择一个字符。
    3. 字符串切片：str[start:end]，列表切片：list[start:end]。
"""

import random
# 定义包含大小写字母、数字和下划线的字符集
chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_'
# 生成20个字符组
str_list = []
for i in range(20):
    s = ''
    for j in range(16):
        s += random.choice(chars)
    str_list.append(s)
# 以字符串形式打印
print('以字符串形式打印：')
for s in str_list:
    print(s)
# 以列表形式打印
print('以列表形式打印：')
print(str_list)
# 以集合形式打印
print('以集合形式打印：')
set_list = set(str_list)
print(set_list)
# 以元组形式打印
print('以元组形式打印：')
tuple_list = tuple(str_list)
print(tuple_list)
# 对字符串切片
print('对字符串切片：')
for s in str_list:
    print(s[4:14])
    print(s[:14][4:])
# 对列表切片
print('对列表切片：')
for l in str_list:
    sub_list1 = list(l)[4:14]
    sub_list2 = list(l)[:14][4:]
    print(sub_list1)
    print(sub_list2)


